Cos'è divide et impera?

Divide et Impera (Divide and Conquer)

Il Divide et Impera (in latino "dividi e comanda") è un paradigma algoritmico basato sulla ricorsione che risolve un problema:

  1. Dividendo il problema in sottoproblemi più piccoli dello stesso tipo.
  2. Conquistando i sottoproblemi ricorsivamente, risolvendo direttamente i sottoproblemi abbastanza piccoli.
  3. Combinando le soluzioni dei sottoproblemi per ottenere la soluzione del problema originale.

Un esempio classico è l'algoritmo di ordinamento Merge Sort. Altro esempio è la Ricerca Binaria su un array ordinato.

Elementi chiave:

  • Ricorsione: L'algoritmo si richiama su sottoproblemi più piccoli.
  • Caso Base: È necessaria una condizione di terminazione per fermare la ricorsione (solitamente quando il sottoproblema è "abbastanza piccolo").
  • Combinazione: La fase di combinazione è cruciale per costruire la soluzione finale a partire dalle soluzioni dei sottoproblemi. L'efficienza di questa fase influisce significativamente sulle prestazioni complessive dell'algoritmo.

Vantaggi:

  • Spesso porta ad algoritmi efficienti, con complessità temporale inferiore rispetto ad approcci iterativi, specialmente per problemi di ordinamento e ricerca.
  • Si adatta bene all'implementazione parallela, poiché i sottoproblemi possono essere risolti indipendentemente.

Svantaggi:

  • La ricorsione può comportare un overhead in termini di spazio (stack delle chiamate) e tempo.
  • La fase di combinazione può essere complessa da implementare in alcuni casi.

Esempi di algoritmi Divide et Impera: